package ru.niir.goodfil.utils;

import ru.niir.goodfil.db.Good;

import java.util.Map;
import java.util.HashMap;

/**
 * Класс для представления одной строки таблицы с ценами
 */
public class PricelistItem
{
    /**
     * Товар, для которого утсанавливаются цены
     */
    private Good good;

    /**
     * Перечень цен на данный товар. Одна цена для каждой клиентской группы.
     * Ключ карты - это идентификатор клиентской группы, а значение - цена на товар для этой клиентской группы.
     * В карте, вообще говоря, должно присутствовать столько значений, сколько есть в системе клиентских групп.
     * Если товар недоступен для клиентов некоторой клиентской группы, должна быть установлена цена "0".
     */
    private Map<Long, FloatPrice> prices = new HashMap<Long, FloatPrice>();

    public PricelistItem(Good good)
    {
        this.good = good;
    }

    /**
     * Получить товар, для которого устанавливаются цены
     */
    public Good getGood()
    {
        return good;
    }

    /**
     * Получить перечень цен на данный товар. Одна цена для каждой клиентской группы.
     * Ключ карты - это идентификатор клиентской группы, а значение - цена на товар для этой клиентской группы.
     * В карте, вообще говоря, должно присутствовать столько значений, сколько есть в системе клиентских групп.
     * Если товар недоступен для клиентов некоторой клиентской группы, должна быть установлена цена "0".
     */
    public Map<Long, FloatPrice> getPrices()
    {
        return prices;
    }

    /**
     * Установить цену на товар для данной клиентской группы.
     * Товар задается в конструкторе PricelistItem
     * @param clientGroupId идентификатор клиентской группы
     * @param price цена
     *
     * @see ru.niir.goodfil.db.ClientGroup
     * @see ru.niir.goodfil.utils.FloatPrice
     */
    public void put(long clientGroupId, FloatPrice price)
    {
        prices.put(clientGroupId, price);
    }

    /**
     * Получить цену товара для указанной клиентской группы
     * @param clientGroupId идентификатор клиентской группы
     * @return цена
     *
     * @see ru.niir.goodfil.db.ClientGroup;
     * @see ru.niir.goodfil.utils.FloatPrice
     */
    public FloatPrice get(long clientGroupId)
    {
        return prices.get(clientGroupId);
    }

    @Override
    public String toString()
    {
        return "PricelistItem{" +
               "good=" + good +
               ", prices=" + prices +
               '}';
    }
}